from typing_extensions import override
from dotenv import load_dotenv
from checker.base_checker import BaseChecker
from langchain.prompts import StringPromptTemplate

load_dotenv()

"""化妆品checker"""
class CosmeticsChecker(BaseChecker):


    def getTemplate(self) -> StringPromptTemplate:
        return """作为一个商品合规性检查专家，请对以下商品名称进行全面分析。 
        参考以下相关法律法规：

        商品名称：{product_name}

        请按照以下步骤进行分析：

        1.判断是否为特殊化妆品
        -特殊化妆品
            定义：用于染发、烫发、祛斑美白、防晒、防脱发及宣称新功效（如“孕妇适用”）的化妆品。
            功能宣称：明确涉及人体生理功能干预（如防晒指数SPF/PA、美白功效等），需通过国家药监局严格功效验证。
            案例：宣称“28天淡斑”的面霜、SPF50+防晒霜均属特殊化妆品。
        -普通化妆品
            定义：除特殊用途外的化妆品，主要功能为清洁、保湿、修饰等基础护理。
            功能宣称：禁止涉及疾病治疗、生理功能改善（如“修复疤痕”“抗衰”），仅限“保湿”“控油”等描述。
            案例：氨基酸洗面奶、透明质酸保湿精华属普通化妆品。

        2.禁用内容筛查
        -禁用词汇检查
            医疗术语：处方、药方、抗菌、消炎等
            绝对化用语：特效、第一、顶级、100%安全等
            虚假暗示：纯天然（未全用天然原料）、治愈率等
        -成分宣称规范
            使用原料名称需与配方一致（如含烟酰胺需标注含量）
            禁止暗示原料功效（如\"含玻尿酸\"需对应保湿宣称）

        3.使用合规性检查
        -暗示性规避
            不得通过商标暗示医疗效果（如\"扁鹊\"\"李时珍\"等历史人物名）

        4.误导性内容检查
        -概念混淆检查
            禁止使用\"量子护肤\"\"光子嫩肤\"等跨领域术语
            不得暗示医疗器械功效（如\"医用级\"\"手术级\")
        -文化敏感性筛查
            禁用封建迷信词汇（如\"神灵\"\"驱邪\")
            动植物名称不得暗示疗效（如\"灵芝修复\"需对应抗衰宣称）

        5. 风险评估：
        - 判定风险等级
        - 给出对应的违规类型、违规点和对应的法律依据
        - 提供改进建议



        {format_instructions}
      """

    @override
    def getLLMName(self) -> str:
        return "qwen-turbo"



class CosmeticsWithPicsChecker(BaseChecker):


    def getTemplate(self) -> StringPromptTemplate:
        return """作为一个商品合规性检查专家，请对以下商品名称和图片进行全面分析。 
        参考以下相关法律法规：

        商品名称：{product_name}
        商品图片：{product_pics}

        请按照以下步骤进行分析：

        1.判断是否为特殊化妆品
        -特殊化妆品
            定义：用于染发、烫发、祛斑美白、防晒、防脱发及宣称新功效（如“孕妇适用”）的化妆品。
            功能宣称：明确涉及人体生理功能干预（如防晒指数SPF/PA、美白功效等），需通过国家药监局严格功效验证。
            案例：宣称“28天淡斑”的面霜、SPF50+防晒霜均属特殊化妆品。
        -普通化妆品
            定义：除特殊用途外的化妆品，主要功能为清洁、保湿、修饰等基础护理。
            功能宣称：禁止涉及疾病治疗、生理功能改善（如“修复疤痕”“抗衰”），仅限“保湿”“控油”等描述。
            案例：氨基酸洗面奶、透明质酸保湿精华属普通化妆品。

        2.禁用内容筛查
        -禁用词汇检查
            医疗术语：处方、药方、抗菌、消炎等
            绝对化用语：特效、第一、顶级、100%安全等
            虚假暗示：纯天然（未全用天然原料）、治愈率等
        -成分宣称规范
            使用原料名称需与配方一致（如含烟酰胺需标注含量）
            禁止暗示原料功效（如\"含玻尿酸\"需对应保湿宣称）

        3.使用合规性检查
        -暗示性规避
            不得通过商标暗示医疗效果（如\"扁鹊\"\"李时珍\"等历史人物名）

        4.误导性内容检查
        -概念混淆检查
            禁止使用\"量子护肤\"\"光子嫩肤\"等跨领域术语
            不得暗示医疗器械功效（如\"医用级\"\"手术级\")
        -文化敏感性筛查
            禁用封建迷信词汇（如\"神灵\"\"驱邪\")
            动植物名称不得暗示疗效（如\"灵芝修复\"需对应抗衰宣称）

        5.标识与标签检查
        -基础标识
            实际生产加工地（至少省级）、生产者名称/地址、生产日期/保质期或批号/限期使用日期。
            案例：生产日期标注"见封口处"但未明确，属违规。
        -成分表验证
            排序规则:含量大于等于1%的成分按降序排列,小于1%的成分可随意排序。
            关键成分:美白(如烟酰胺、377)、抗衰(视黄醇、玻色因)等需达到有效浓度(如377需≥0.3%）。
        -特殊化妆品标识
            批准文号：国产特殊化妆品（美白/防晒等）需"国妆特字G+年份+4位编号"（如"国妆特字G20251234"）。
            备案号：进口非特殊用途化妆品需"国妆网备进字（省简称）+年份+6位编号"（如"国妆网备进字(沪)2025001234"）。

        6. 风险评估：
        - 判定风险等级
        - 给出对应的违规类型、违规点和对应的法律依据
        - 提供改进建议


        {format_instructions}
      """